// 一、实际开发中只有进行类型推导时，可能会自动推导出来是never类型

// 1.一个函数是死循环
function foo() {
  while(true) {

  }
  throw new Error("123")
}  
foo()

// 2.解析歌词的工具
function parseLyric() {
  return []
}

// 二、封装框架/工具库的时候可以使用一个never

// 模拟场景，原本的函数只有string和number类型，但是后来的开发者增加了boolean，如果没有never，代码不会报错，但是有了never，会报错无法将never赋值boolean

// 其他时候在扩展工具的时候，对于一些没有处理的case，可以直接报错
function handleMessage(message: string | number | boolean) {
  switch(typeof message){
    case "string":
      console.log(message.length)
      break
    case "number":
      console.log(Number(message))
      break
    default:
      const check:never = message
  }
}

handleMessage("aaa")
handleMessage(12312)